Android独有的安全特性有哪些
Android独有的安全特性:
沙箱技术:沙箱技术又称为沙盒(Sandbox)技术,它为可能不安全的代码提供一个运行的空间,当然这个运行空间不是我们真正的操作系统,而是利用虚拟技术提供一个与实际环境类似的操作空间,或者直接提供一个我们实际运行浏览器的镜像,让网络上的程序可以在这个空间里随意地运行。
Android内核层安全机制:Android的Linux内核包含了强制访问控制机制和自主访问控制机制。强制访问控制机制由Linux安全模块来实现,但Google出于某种原因,并没有将LSM编译进Android内核。自主访问控制机制通常由文件访问控制来实现,Linux文件系统的权限控制是由user、group、other与读(r)、写(w)、执行(x)的不同组合来实现的。这样,每个文件都有3个基本权限集,它们的组合可以容许、限制、拒绝用户、用户组和其他用户的访问。通常,只有UID是system或Root的用户才拥有Android系统文件的访问权限,而应用程序只有通过申请Android权限才能实现对相应文件的访问,也正因为如此,Android使用内核层Linux的自主访问控制机制和运行时的Dalvik虚拟机来实现Android的沙箱机制。
Android的权限检查机制:Android是一个“权限分离”的系统,任何一个应用程序在使用Android受限资源(网络、电话、短信、蓝牙、通讯录、SD Card等)之前都必须以XML文件的形式事先向Android系统提出申请,等待Android系统批准后应用程序方可使用相应的资源,权限与Java的API是多对多的映射关系。
Android的数字签名机制:所有安装到Android系统中的应用程序都必须拥有一个数字证书,此数字证书用于标识应用程序的作者和应用程序之间的信任关系。Android系统不会安装一个没有数字证书的应用程序,如果一个权限的保护级别为Signature,只有当应用程序所用数字签名与声明此权限的应用程序所用数字签名相同时,Android系统才会授权。如果一个权限的保护级别为Signature Or System, Android系统会将该权限授予具有相同数字签名的应用程序或Android包类。
内核通信机制:Android中每个运行应用都是一个独立的进程。进程间使用传统的UNIX方式进行通信,如文件系统、Socket、信号等。为了满足多个拥有不同权限的进程安全通信的需求,Android还使用了新的进程间通信方式。其中,Binder提供了轻量级的远程方法调用机制,使进程内和跨进程调用的效率得到了提高。
继承自Linux的安全机制:
用户ID(UID):Android系统是基于Linux内核的,也继承了Linux的基于用户和文件权限的安全机制,并将这种机制用于管理应用程序。Linux系统可以有多个用户,每个用户都有一个用户名,同时拥有一个User ID,两者是一一对应的。每个用户可以属于一个或者多个组。在这种机制下,每个文件都是属于某个用户的,这个用户称为文件的所有者。文件对于所有者、所有者所在组的用户以及其他任意用户分别开放了不同的操作权限,操作权限分为读、写、运行3种,只有获得了文件操作权限的应用才能对文件做相应的操作,这样就保护了文件的安全性,保证用户对自己不具备权限的文件不能进行操作。在Android应用程序安装成功后,系统就为其指定了一个唯一的用户名,对应着系统中唯一的UID。这个用户名和UID实际上就是Linux中的概念。
Root权限:Root是Linux和UNIX系统中的超级管理员用户账户,该账户拥有整个系统的最高权限,可以操作系统中的所有对象,拥有Root权限可以访问所有文件、修改系统核心等。